package framework.mapstruct;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;

/**
 * MapStruct 测试类：MapStruct 框架自动生成
 *
 * @author ME
 * @date 2020/11/3
 */
public class MapStructTest {

    public static void main(String[] args) {
        // 实体属性 属性名不一致：carName -> name
        // 实体属性 类型不一致：（createTime）Date -> String
        System.out.println("属性名不一致、类型不一致");
        CarPo carPo = CarPo.builder().id(1).brand("BMW").carName("宝马").origin("沈阳车厂").build();
        CarVo carVo = CarCovertBasic.INSTANCE.toConvertVo(carPo);
        System.out.println(carVo);

        // 集合类型转换
        System.out.println("\nCarVo = CarPo + AttributePo");
        List<CarPo> poList = new ArrayList<>();
        poList.add(carPo);
        CarPo carPo2 = CarPo.builder().id(2).brand("benz").carName("奔驰").build();
        poList.add(carPo2);
        poList.forEach(System.out::println);

        // 多个类型整合成一个类型
        System.out.println("\nCarVo = CarPo + AttributePo");
        AttributePo attributePo = AttributePo.builder().price(9.99).color("red").build();
        carVo = CarCovertBasic.INSTANCE.toConvertVo(carPo, attributePo);
        System.out.println(carVo);
    }

    public static String dateToStr(Date date) {
        date = Optional.ofNullable(date).orElse(new Date());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return format.format(date);
    }
}
